package com.sojson.util.pay.wx.bean;

import java.util.Map;
import java.util.TreeMap;

import com.sojson.base.impl.BaseUtilDto;
import com.sojson.util.pay.wx.constant.WxConstant;

/**
 * 微信V2接口参数Bean
 * 
 * @author liu
 * @date 2020-09-03
 */
public class WxParamV2<T> extends BaseUtilDto {

    /***/
    private static final long serialVersionUID = 2231406852564862492L;

    private Map<String, T> map;

    public WxParamV2() {
        this.map = new TreeMap<>();
    }

    public WxParamV2(Map<String, T> map) {
        this.map = map;
    }

    /** 获取Map */
    public Map<String, T> getMap() {
        return map;
    }

    /** 设置Map */
    public void setMap(Map<String, T> map) {
        this.map = map;
    }

    /** 获取商户号 */
    public T getMchid() {
        return map.get(WxConstant.FIELD_MCHID);
    }

    /** 设置商户号 */
    public void setMchid(T mchid) {
        map.put(WxConstant.FIELD_MCHID, mchid);
    }

    /** 获取商户号 */
    public T getMchId() {
        return map.get(WxConstant.FIELD_MCH_ID);
    }

    /** 设置商户号 */
    public void setMchId(T mchid) {
        map.put(WxConstant.FIELD_MCH_ID, mchid);
    }

    /** 获取商户号 */
    public T getPartnerid() {
        return map.get(WxConstant.FIELD_PARTNERID);
    }

    /** 设置商户号 */
    public void setPartnerid(T partnerid) {
        map.put(WxConstant.FIELD_PARTNERID, partnerid);
    }

    /** 获取商户号的Appid或跟商户号绑定的Appid(请求统一下单接口时请注意APPID的应用属性,例如公众号场景下,需使用应用属性为公众号的APPID) */
    public T getAppid() {
        return map.get(WxConstant.FIELD_APPID);
    }

    /** 设置商户号的Appid或跟商户号绑定的Appid(请求统一下单接口时请注意APPID的应用属性,例如公众号场景下,需使用应用属性为公众号的APPID) */
    public void setAppid(T appid) {
        map.put(WxConstant.FIELD_APPID, appid);
    }

    /** 获取商户号的Appid或跟商户号绑定的Appid(请求统一下单接口时请注意APPID的应用属性,例如公众号场景下,需使用应用属性为公众号的APPID) */
    public T getMchAppid() {
        return map.get(WxConstant.FIELD_MCH_APPID);
    }

    /** 设置商户号的Appid或跟商户号绑定的Appid(请求统一下单接口时请注意APPID的应用属性,例如公众号场景下,需使用应用属性为公众号的APPID) */
    public void setMchAppid(T mchAppid) {
        map.put(WxConstant.FIELD_MCH_APPID, mchAppid);
    }

    /** 获取用户唯一标识 */
    public T getOpenid() {
        return map.get(WxConstant.FIELD_OPENID);
    }

    /** 设置用户唯一标识 */
    public void setOpenid(T openid) {
        map.put(WxConstant.FIELD_OPENID, openid);
    }

    /** 获取商户订单号,需保持唯一性 */
    public T getPartnerTradeNo() {
        return map.get(WxConstant.FIELD_PARTNER_TRADE_NO);
    }

    /** 设置商户订单号,需保持唯一性 */
    public void setPartnerTradeNo(T partnerTradeNo) {
        map.put(WxConstant.FIELD_PARTNER_TRADE_NO, partnerTradeNo);
    }

    /** 获取校验用户姓名选项,NO_CHECK:不校验真实姓名,FORCE_CHECK:强校验真实姓名 */
    public T getCheckName() {
        return map.get(WxConstant.FIELD_CHECK_NAME);
    }

    /** 设置校验用户姓名选项,NO_CHECK:不校验真实姓名,FORCE_CHECK:强校验真实姓名 */
    public void setCheckName(T checkName) {
        map.put(WxConstant.FIELD_CHECK_NAME, checkName);
    }

    /** 获取金额 */
    public T getAmount() {
        return map.get(WxConstant.FIELD_AMOUNT);
    }

    /** 设置金额 */
    public void setAmount(T amount) {
        map.put(WxConstant.FIELD_AMOUNT, amount);
    }

    /** 获取生成密钥的随机字符串 */
    public T getNonceStr() {
        return map.get(WxConstant.FIELD_NONCE_STR);
    }

    /** 设置生成密钥的随机字符串 */
    public void setNonceStr(T nonceStr) {
        map.put(WxConstant.FIELD_NONCE_STR, nonceStr);
    }

    /** 获取生成密钥的随机字符串 */
    public T getNoncestr() {
        return map.get(WxConstant.FIELD_NONCESTR);
    }

    /** 设置生成密钥的随机字符串 */
    public void setNoncestr(T nonceStr) {
        map.put(WxConstant.FIELD_NONCESTR, nonceStr);
    }

    /** 获取系统当前时间戳 */
    public T getTimestamp() {
        return map.get(WxConstant.FIELD_TIMESTAMP);
    }

    /** 设置系统当前时间戳 */
    public void setTimestamp(T timestamp) {
        map.put(WxConstant.FIELD_TIMESTAMP, timestamp);
    }

    /** 获取备注 */
    public T getDesc() {
        return map.get(WxConstant.FIELD_DESC);
    }

    /** 设置备注 */
    public void setDesc(T desc) {
        map.put(WxConstant.FIELD_DESC, desc);
    }

    /** 获取订单号 */
    public T getOutTradeNo() {
        return map.get(WxConstant.FIELD_OUT_TRADE_NO);
    }

    /** 设置订单号 */
    public void setOutTradeNo(T outTradeNo) {
        map.put(WxConstant.FIELD_OUT_TRADE_NO, outTradeNo);
    }

    /** 获取订单金额 */
    public T getTotalFee() {
        return map.get(WxConstant.FIELD_TOTAL_FEE);
    }

    /** 设置订单金额 */
    public void setTotalFee(T totalFee) {
        map.put(WxConstant.FIELD_TOTAL_FEE, totalFee);
    }

    /** 获取退款单号 */
    public T getOutRefundNo() {
        return map.get(WxConstant.FIELD_OUT_REFUND_NO);
    }

    /** 设置退款单号 */
    public void setOutRefundNo(T outRefundNo) {
        map.put(WxConstant.FIELD_OUT_REFUND_NO, outRefundNo);
    }

    /** 获取退款金额 */
    public T getRefundfee() {
        return map.get(WxConstant.FIELD_REFUND_FEE);
    }

    /** 设置退款金额 */
    public void setRefundfee(T refundfee) {
        map.put(WxConstant.FIELD_REFUND_FEE, refundfee);
    }

    /** 获取商品描述 */
    public T getBody() {
        return map.get(WxConstant.FIELD_BODY);
    }

    /** 设置商品描述 */
    public void setBody(T body) {
        map.put(WxConstant.FIELD_BODY, body);
    }

    /** 获取交易类型 */
    public T getTradeType() {
        return map.get(WxConstant.FIELD_TRADE_TYPE);
    }

    /** 设置交易类型 */
    public void setTradeType(T tradeType) {
        map.put(WxConstant.FIELD_TRADE_TYPE, tradeType);
    }

    /** 获取商品ID */
    public T getProductId() {
        return map.get(WxConstant.FIELD_PRODUCT_ID);
    }

    /** 设置商品ID */
    public void setProductId(T tradeType) {
        map.put(WxConstant.FIELD_PRODUCT_ID, tradeType);
    }

    /** 获取终端IP */
    public T getSpbillCreateIp() {
        return map.get(WxConstant.FIELD_SPBILL_CREATE_IP);
    }

    /** 设置终端IP */
    public void setSpbillCreateIp(T spbillCreateIp) {
        map.put(WxConstant.FIELD_SPBILL_CREATE_IP, spbillCreateIp);
    }

    /** 获取通知地址 */
    public T getNotifyUrl() {
        return map.get(WxConstant.FIELD_NOTIFY_URL);
    }

    /** 设置通知地址 */
    public void setNotifyUrl(T notifyUrl) {
        map.put(WxConstant.FIELD_NOTIFY_URL, notifyUrl);
    }

    /** 获取签名 */
    public T getSign() {
        return map.get(WxConstant.FIELD_SIGN);
    }

    /** 设置签名 */
    public void setSign(T sign) {
        map.put(WxConstant.FIELD_SIGN, sign);
    }

    /** 获取签名方式 */
    public T getSignType() {
        return map.get(WxConstant.FIELD_SIGN_TYPE);
    }

    /** 设置签名方式 */
    public void setSignType(T sign) {
        map.put(WxConstant.FIELD_SIGN_TYPE, sign);
    }

    /** 获取预支付交易会话ID */
    public T getPrepayid() {
        return map.get(WxConstant.FIELD_PREPAYID);
    }

    /** 设置预支付交易会话ID */
    public void setPrepayid(T prepayid) {
        map.put(WxConstant.FIELD_PREPAYID, prepayid);
    }

    /** 获取扩展字段 */
    public T getPackage() {
        return map.get(WxConstant.FIELD_PACKAGE);
    }

    /** 设置扩展字段 */
    public void setPackage(T packaged) {
        map.put(WxConstant.FIELD_PACKAGE, packaged);
    }

}